Зачинено. Це питання потребує деталей або ясності. Наразі відповіді не приймаються. Хочете покращити це питання? Додайте деталі та проясніть проблему, відредагувавши цю публікацію. Закрито 1 рік тому. Удосконалюйте це питання Я роблю певний виклик коду, і я хочу отримати перші 3 значення зі свого масиву, вказавши початковий індекс і отримуючи лише перші (3 або можуть бути будь-якої довжини) значення з початкового індексу. Я спробував цей код, і він працює, але структура коду занадто довга, так як я можу зробити це коротшим, щоб його було легко зрозуміти. int n = 10; подвійний підпис = новий подвійний [] {1, 1, 1}; double [] ret = новий double [n]; подвійна сума = 0; ret [0] = підпис [0]; ret [1] = підпис [1]; ret [2] = підпис [2]; int x, i; для (i = 0; i
2021-01-31 08:21:15
За допомогою LINQ ви можете спробувати щось подібне: значення var = array.Skip (індекс) Візьміть (n) .ToArray (); Де індекс - це індекс першого елемента, а n - кількість елементів, які потрібно вибрати. Наприклад https://dotnetfiddle.net/Pk1rwY Як допоміжна записка. Використання LINQ не означає, що ваш код буде швидшим. Він був би більш компактним / читабельним і т. Д. Для того, щоб оцінити, наскільки продуктивним є ваш код, вам потрібно використовувати щось на зразок BenchmarkDotNet. | Немає рішення Linq: private static T [] Extract(T [] source, int fromIndex, int length) { якщо (null == джерело) викинути новий ArgumentNullException (nameof (джерело)); else if (fromIndex <0) викинути новий ArgumentOutOfRangeException (nameof (fromIndex), "З індексу має бути невід'ємним"); else if (довжина <0) кинути новий ArgumentOutOfRangeException (nameof (length), "Довжина повинна бути невід’ємною"); if (fromIndex> = source.Length || length == 0) повернути новий T [0]; T [] результат = новий T [Math.Min (length, source.Length - fromIndex)]; Array.Copy (джерело, fromIndex, result, 0, result.Length); повернути результат; } Тоді подвійний [] підпис = новий подвійний [] {0, 1, 2, 3, 4, 5}; double [] ret = Витяг (підпис, 3, 2); Console.Write (string.Join (",", ret)); Результат: 3, 4 | З вашого запитання вам потрібно скористатися операторами .Take та .Skip. var result = array.Skip (startIndex) .Take (numberOfElements); Таким чином, з вашого коду здається, що ви намагаєтесь зробити щось дещо інше, а саме підсумовувати елементи. Тут може допомогти оператор .Sum. | Не відповідь, яку ви шукаєте? Перегляньте інші запитання, позначені тегами c # масиви linq, або задайте власне запитання.